/*
******************************************************************************************************* 
**  Copyright (C) 2019, 苏州检易生物科技有限公司 
**  All rights reserved. 
** 
**  FileName:       	fetp_task.h
**  Description:	
**  Author:        	 
**  Version				v0.1
**  Date:           	2019-11-26
**	Function List： 
**  History:         
*********************************************************************************************************
*/
/*
*********************************************************************************************************
*                                              	防止重复包含
*********************************************************************************************************
*/

#ifndef _CAN_TASK_H_
#define _CAN_TASK_H_
/*
*********************************************************************************************************
*                                              	调试开关
*********************************************************************************************************
*/



/*
*********************************************************************************************************
*                                              	头文件
*********************************************************************************************************
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


#include "stm32h7xx_hal.h"
#include "log_console.h"
#include <rtthread.h>
#include "app_msg.h"
#include "can_mem.h"
#include "os_config.h"
#include "can_callback.h"
#include "act.h"
/*
*********************************************************************************************************
*                                              	宏定义
*********************************************************************************************************
*/

#define		CAN_SEND_LIST_MAX				(256)
#define		CAN_ACK_LIST_MAX				(1)
#define		CAN_PERIPH_LIST_MAX			(64)
#define		CAN_POLL_CMD_THRESHOLD	16

#define		CAN_TASK_ACK_TIMEOUT			100
#define		CAN_PERIPH_MAX_RETRANS		5			/*外设总线最多重传次数*/
/*
*********************************************************************************************************
*                                              枚举和结构体类型定义
*********************************************************************************************************
*/
typedef enum{
	CAN_MSG_TMR = 0,
	CAN_MSG_ISR,
	CAN_MSG_PUSH,
	
	PERIPH_MSG_ISR,
	PERIPH_MSG_PUSH,
}can_task_msg_t;


typedef struct{
	bsp_can_t*					can_handle;
	bsp_can_t*					periph_handle;
	struct rt_thread*		p_tcb;
	struct rt_mailbox		mailbox;
	can_mem_list_t*			p_send_list;
	can_mem_list_t*			p_ack_list;
	can_mem_list_t*			p_periph_list;
	uint8_t							periph_ack; /*外设总线等待恢复标志位*/
}can_task_handle_t;

/*
*********************************************************************************************************
*                                              	全局变量声明
*********************************************************************************************************
*/
extern can_task_handle_t g_can_task;
/*
*********************************************************************************************************
*                                              	函数声明
*********************************************************************************************************
*/

void can_task_start(void);
uint16_t can_get_motor_list_size(void);
uint16_t can_get_periphlist_size(void);
#endif
